home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Software Vault: The Gold Collection
/
Software Vault - The Gold Collection (American Databankers) (1993).ISO
/
cdr25
/
fsperf.zip
/
FSPERF.C
next >
Wrap
Text File
|
1993-03-12
|
11KB
|
264 lines
#define LINT_ARGS 1
#define TESTCOUNT1 8192
#define TESTCOUNT2 2048
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <fcntl.h>
#include <io.h>
#include <memory.h>
#include <math.h>
#include <float.h>
#include <sys\types.h>
#include <sys\stat.h>
char filename[ ] = "FSPERF.DAT";
char fbuffer[2048];
unsigned long fpos[TESTCOUNT1];
main ()
{
register int loop1cnt, loop2cnt;
struct tm *sys_time;
long start_time, end_time, l_time;
int fhandle;
double t_diff;
/* ------------------------------------------------------------- */
/* display program logo */
/* ------------------------------------------------------------- */
printf("FSPERF - file system performance test program\n");
printf("Version 1.00 Level 00\n\n");
/* ------------------------------------------------------------- */
/* create file, write 256 records and close it */
/* ------------------------------------------------------------- */
printf("preparing test...\r");
fhandle = open(filename, O_BINARY | O_CREAT | O_RDWR, S_IREAD | S_IWRITE);
if (fhandle == 0) {
perror("\nerror creating/opening file\n\n");
exit(1);
}
lseek(fhandle, 0L, SEEK_SET);
for (loop1cnt =0; loop1cnt < TESTCOUNT2; loop1cnt++)
write(fhandle, fbuffer, 2048);
close(fhandle);
/* ------------------------------------------------------------- */
/* write out date and time */
/* ------------------------------------------------------------- */
start_time = time(&l_time);
printf("%s", ctime(&l_time));
/* ------------------------------------------------------------- */
/* generate random positions for 512 bytes record length */
/* ------------------------------------------------------------- */
printf("\n");
for (loop1cnt = 0; loop1cnt < TESTCOUNT1; loop1cnt++) {
fpos[loop1cnt] = (unsigned long) rand() * TESTCOUNT1 * 512L / RAND_MAX;
}
/* ------------------------------------------------------------- */
/* test open */
/* ------------------------------------------------------------- */
start_time = time(&l_time);
fhandle = open(filename, O_RDWR | O_BINARY);
if (fhandle == 0) {
perror("error opening file\n\n");
exit(1);
}
end_time = time(&l_time);
t_diff = difftime(start_time, end_time);
printf("open : %1.0lf sec\n", difftime(end_time, start_time));
/* ------------------------------------------------------------- */
/* test read sequential 512 bytes 8192 times forward */
/* ------------------------------------------------------------- */
lseek(fhandle, 0L, SEEK_SET);
start_time = time(&l_time);
for (loop1cnt = 0; loop1cnt < TESTCOUNT1; loop1cnt++)
read(fhandle, fbuffer, 512);
end_time = time(&l_time);
printf("read 512 bytes %u times forward : %1.0lf sec\n", TESTCOUNT1, difftime(end_time, start_time));
/* ------------------------------------------------------------- */
/* test read sequential 512 bytes 8192 times backward */
/* ------------------------------------------------------------- */
lseek(fhandle, -512L, SEEK_END);
start_time = time(&l_time);
for (loop1cnt =0; loop1cnt < TESTCOUNT1; loop1cnt++) {
read(fhandle, fbuffer, 512);
lseek(fhandle, -1024L, SEEK_CUR);
}
end_time = time(&l_time);
printf("read 512 bytes %u times backward : %1.0lf sec\n", TESTCOUNT1, difftime(end_time, start_time));
/* ------------------------------------------------------------- */
/* test read random 512 bytes 8192 times */
/* ------------------------------------------------------------- */
lseek(fhandle, 0L, SEEK_SET);
start_time = time(&l_time);
for (loop1cnt =0; loop1cnt < TESTCOUNT1; loop1cnt++) {
lseek(fhandle, fpos[loop1cnt], SEEK_SET);
read(fhandle, fbuffer, 512);
}
end_time = time(&l_time);
printf("read 512 bytes %u times random : %1.0lf sec\n", TESTCOUNT1, difftime(end_time, start_time));
/* ------------------------------------------------------------- */
/* test write sequential 512 bytes 8192 times forward */
/* ------------------------------------------------------------- */
lseek(fhandle, 0L, SEEK_SET);
start_time = time(&l_time);
for (loop1cnt = 0; loop1cnt < TESTCOUNT1; loop1cnt++)
write(fhandle, fbuffer, 512);
end_time = time(&l_time);
printf("write 512 bytes %u times forward : %1.0lf sec\n", TESTCOUNT1, difftime(end_time, start_time));
/* ------------------------------------------------------------- */
/* test write sequential 512 bytes 8192 times backward */
/* ------------------------------------------------------------- */
lseek(fhandle, -512L, SEEK_END);
start_time = time(&l_time);
for (loop1cnt =0; loop1cnt < TESTCOUNT1; loop1cnt++) {
write(fhandle, fbuffer, 512);
lseek(fhandle, -1024L, SEEK_CUR);
}
end_time = time(&l_time);
printf("write 512 bytes %u times backward : %1.0lf sec\n", TESTCOUNT1, difftime(end_time, start_time));
/* ------------------------------------------------------------- */
/* test write random 512 bytes 8192 times */
/* ------------------------------------------------------------- */
lseek(fhandle, 0L, SEEK_SET);
start_time = time(&l_time);
for (loop1cnt =0; loop1cnt < TESTCOUNT1; loop1cnt++) {
lseek(fhandle, fpos[loop1cnt], SEEK_SET);
write(fhandle, fbuffer, 512);
}
end_time = time(&l_time);
printf("write 512 bytes %u times random : %1.0lf sec\n", TESTCOUNT1, difftime(end_time, start_time));
/* ------------------------------------------------------------- */
/* test read-rewrite random 512 bytes 8192 times */
/* ------------------------------------------------------------- */
lseek(fhandle, 0L, SEEK_SET);
start_time = time(&l_time);
for (loop1cnt =0; loop1cnt < TESTCOUNT1; loop1cnt++) {
lseek(fhandle, fpos[loop1cnt], SEEK_SET);
read(fhandle, fbuffer, 512);
write(fhandle, fbuffer, 512);
}
end_time = time(&l_time);
printf("read-rewrite 512 bytes %u times random : %1.0lf sec\n", TESTCOUNT1, difftime(end_time, start_time));
/* ------------------------------------------------------------- */
/* generate random positions for 2048 bytes record length */
/* ------------------------------------------------------------- */
printf("\n");
for (loop1cnt = 0; loop1cnt < TESTCOUNT2; loop1cnt++) {
fpos[loop1cnt] = (unsigned long) rand() * TESTCOUNT2 * 2048L / RAND_MAX;
}
/* ------------------------------------------------------------- */
/* test read sequential 2048 bytes 2048 times forward */
/* ------------------------------------------------------------- */
lseek(fhandle, 0L, SEEK_SET);
start_time = time(&l_time);
for (loop1cnt = 0; loop1cnt < TESTCOUNT2; loop1cnt++)
read(fhandle, fbuffer, 2048);
end_time = time(&l_time);
printf("read 2048 bytes %u times forward : %1.0lf sec\n", TESTCOUNT2, difftime(end_time, start_time));
/* ------------------------------------------------------------- */
/* test read sequential 2048 bytes 2048 times backward */
/* ------------------------------------------------------------- */
lseek(fhandle, -2048L, SEEK_END);
start_time = time(&l_time);
for (loop1cnt =0; loop1cnt < TESTCOUNT2; loop1cnt++) {
read(fhandle, fbuffer, 2048);
lseek(fhandle, -4096L, SEEK_CUR);
}
end_time = time(&l_time);
printf("read 2048 bytes %u times backward : %1.0lf sec\n", TESTCOUNT2, difftime(end_time, start_time));
/* ------------------------------------------------------------- */
/* test read random 2048 bytes 2048 times */
/* ------------------------------------------------------------- */
lseek(fhandle, 0L, SEEK_SET);
start_time = time(&l_time);
for (loop1cnt =0; loop1cnt < TESTCOUNT2; loop1cnt++) {
lseek(fhandle, fpos[loop1cnt], SEEK_SET);
read(fhandle, fbuffer, 2048);
}
end_time = time(&l_time);
printf("read 2048 bytes %u times random : %1.0lf sec\n", TESTCOUNT2, difftime(end_time, start_time));
/* ------------------------------------------------------------- */
/* test write sequential 2048 bytes 2048 times forward */
/* ------------------------------------------------------------- */
lseek(fhandle, 0L, SEEK_SET);
start_time = time(&l_time);
for (loop1cnt = 0; loop1cnt < TESTCOUNT2; loop1cnt++)
write(fhandle, fbuffer, 2048);
end_time = time(&l_time);
printf("write 2048 bytes %u times forward : %1.0lf sec\n", TESTCOUNT2, difftime(end_time, start_time));
/* ------------------------------------------------------------- */
/* test write sequential 2048 bytes 2048 times backward */
/* ------------------------------------------------------------- */
lseek(fhandle, -2048L, SEEK_END);
start_time = time(&l_time);
for (loop1cnt =0; loop1cnt < TESTCOUNT2; loop1cnt++) {
write(fhandle, fbuffer, 2048);
lseek(fhandle, -4096L, SEEK_CUR);
}
end_time = time(&l_time);
printf("write 2048 bytes %u times backward : %1.0lf sec\n", TESTCOUNT2, difftime(end_time, start_time));
/* ------------------------------------------------------------- */
/* test write random 2048 bytes 2048 times */
/* ------------------------------------------------------------- */
lseek(fhandle, 0L, SEEK_SET);
start_time = time(&l_time);
for (loop1cnt =0; loop1cnt < TESTCOUNT2; loop1cnt++) {
lseek(fhandle, fpos[loop1cnt], SEEK_SET);
write(fhandle, fbuffer, 2048);
}
end_time = time(&l_time);
printf("write 2048 bytes %u times random : %1.0lf sec\n", TESTCOUNT2, difftime(end_time, start_time));
/* ------------------------------------------------------------- */
/* test read-rewrite random 2048 bytes 2048 times */
/* ------------------------------------------------------------- */
lseek(fhandle, 0L, SEEK_SET);
start_time = time(&l_time);
for (loop1cnt =0; loop1cnt < TESTCOUNT2; loop1cnt++) {
lseek(fhandle, fpos[loop1cnt], SEEK_SET);
read(fhandle, fbuffer, 2048);
write(fhandle, fbuffer, 2048);
}
end_time = time(&l_time);
printf("read-rewrite 2048 bytes %u times random : %1.0lf sec\n", TESTCOUNT2, difftime(end_time, start_time));
/* ------------------------------------------------------------- */
/* test close */
/* ------------------------------------------------------------- */
start_time = time(&l_time);
close(fhandle);
end_time = time(&l_time);
printf("close : %1.0lf sec\n", difftime(end_time, start_time));
/* ------------------------------------------------------------- */
/* write out date and time */
/* ------------------------------------------------------------- */
start_time = time(&l_time);
printf("%s", ctime(&l_time));
}